home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Auge 4000
/
Auge 4000 #45 (1990-06-20)(Amiga User Gruppe Einzugsgebiet 4000).zip
/
Auge 4000 #45 (1990-06-20)(Amiga User Gruppe Einzugsgebiet 4000).adf
/
ANWENDUNGEN
/
FUNKUHR
/
FUNKUHR.LST
< prev
next >
Wrap
File List
|
1990-06-20
|
2KB
|
112 lines
ON BREAK GOSUB esc ! Nehmt die Zeile mal weg - und staund
'
' Hauptprogramm Ver 0.02
'
'
' wdh&
DIM bit&(60)
'
PRINT "Warten..."
WHILE (@tick AND 2)=0 ! Auf Minutenbeginn warten
WEND
CLS
DO
~FRE(0) ! Garbage-Collection
CLR fehler&
FOR wdh&=0 TO 57 ! Bits einlesen - was sonst?
bit&(wdh&)=@tick
IF bit&(wdh&)>1 ! Auweia - ein Fehler!
fehler&=1
bit&(wdh&)=bit&(wdh&) AND 1
ENDIF
EXIT IF fehler& ! Fehler aufgetreten?
NEXT wdh&
'
' Dekodierung der Daten und Paritätsprüfung
'
CLR pari&
FOR wdh&=0 TO 27
ADD pari&,bit&(wdh&)
NEXT wdh&
IF EVEN(pari&)
min&=bit&(20)+bit&(21)*2+bit&(22)*4+bit&(23)*8+bit&(24)*10+bit&(25)*20+bit&(26)*40
ENDIF
'
CLR pari&
FOR wdh&=28 TO 34
ADD pari&,bit&(wdh&)
NEXT wdh&
IF EVEN(pari&)
std&=bit&(28)+bit&(29)*2+bit&(30)*4+bit&(31)*8+bit&(32)*10+bit&(33)*20
ENDIF
'
CLR pari&
FOR wdh&=35 TO 57
ADD pari&,bit&(wdh&)
NEXT wdh&
IF EVEN(pari&)
tag&=bit&(35)+bit&(36)*2+bit&(37)*4+bit&(38)*8+bit&(39)*10+bit&(40)*20
wtg&=bit&(41)+bit&(42)*2+bit&(43)*4
mnt&=bit&(44)+bit&(45)*2+bit&(46)*4+bit&(47)*8+bit&(48)*10
jhr&=bit&(49)+bit&(50)*2+bit&(51)*4+bit&(52)*8+bit&(53)*10+bit&(54)*20+bit&(55)*40+bit&(56)*80
ENDIF
'
'
'
zeit$=STR$(std&)+":"+STR$(min&)
datum$=STR$(tag&)+"."+STR$(mnt&)+".19"+STR$(jhr&)
' LPRINT zeit$;" ";datum$;" ";wtg&
'
WHILE (@tick AND 2)=0 ! Auf Minutenbeginn warten
WEND
SOUND 1500,5
PRINT AT(27,14);zeit$;" ";datum$;" ";wtg&;" "
LOOP
END
'
' Daten
'
week:
DATA Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag
'
'
' Unterprogramme
'
'
> PROCEDURE esc
EDIT
RETURN
> FUNCTION tick
'
' Variablen
'
' GLOBAL break%
LOCAL pulse&,ret&
CLR pulse&,ret& ! Eigentlich überflüssig...
'
' Zeiten stoppen
'
WHILE NOT STRIG(1) ! Ende der Pause abwarten
WEND
break%=TIMER-break% ! Zeit für Pausenlänge merken
WHILE STRIG(1) ! Impuls stoppen
INC pulse&
WEND
'
' Auswertung
'
IF break%>420 OR break%<140 ! Pause zu lang oder zu kurz?
ret&=4 ! Fehler - kein Wert zurück, Errorflag setzen
ELSE
ret&=pulse&\700 ! Bit ausrechnen
IF break%>300 ! Minutenbeginn?
ret&=BSET(ret&,1) ! Flag für Minutenbeginn setzen
ENDIF
ENDIF
'
' noch aufräumen...
'
break%=TIMER
RETURN ret&
ENDFUNC